function results = mobile_communication_evolution(varargin)
%% 移动通信发展历程可视化函数
% 展示从1G到5G移动通信系统的技术演进和关键指标变化
%
% 输入参数（可选）：
%   'show_plots' - 是否显示图形 (默认: true)
%   'save_results' - 是否保存结果 (默认: false)
%
% 输出：
%   results - 包含各代系统数据的结构体
%
% 作者：周勇
% 日期：2024年

%% 参数解析
p = inputParser;
addParameter(p, 'show_plots', true, @islogical);
addParameter(p, 'save_results', false, @islogical);
parse(p, varargin{:});

show_plots = p.Results.show_plots;
save_results = p.Results.save_results;

%% 定义各代移动通信系统的关键参数
generations = {'1G', '2G', '3G', '4G', '5G'};
years = [1980, 1990, 2000, 2010, 2020];
data_rates = [0.002, 0.064, 2, 100, 1000]; % Mbps
frequencies = [0.8, 0.9, 2, 2.5, 3.5]; % GHz

%% 创建结果结构体
results.generations = generations;
results.years = years;
results.data_rates = data_rates;
results.frequencies = frequencies;
results.tech_features = {...
    '1G', '模拟语音', 'FDMA', '电路交换', 'N/A';
    '2G', '数字语音+短信', 'TDMA', '电路交换', '9.6-14.4 kbps';
    '3G', '多媒体+数据', 'CDMA', '分组交换', '384 kbps-2 Mbps';
    '4G', '全IP化', 'OFDMA', '全IP网络', '100 Mbps-1 Gbps';
    '5G', '万物互联', 'OFDMA+新波形', '云化网络', '1-10 Gbps'};

%% 绘图
if show_plots
    fig_evolution = figure('Name', '移动通信系统发展历程', 'Position', [100, 100, 1200, 800]);
    
    % 绘制数据速率发展历程
    subplot(2,2,1);
    semilogy(years, data_rates, 'b-o', 'LineWidth', 2, 'MarkerSize', 8);
    grid on;
    xlabel('年份');
    ylabel('数据速率 (Mbps)');
    title('移动通信系统数据速率演进');
    xticks(years);
    xticklabels(generations);
    
    % 绘制载波频率变化
    subplot(2,2,2);
    plot(years, frequencies, 'r-s', 'LineWidth', 2, 'MarkerSize', 8);
    grid on;
    xlabel('年份');
    ylabel('载波频率 (GHz)');
    title('载波频率演进');
    xticks(years);
    xticklabels(generations);
    
    % 绘制技术特点对比表
    subplot(2,2,[3,4]);
    axis off;
    title('各代移动通信系统技术特点');
    
    % 创建表格数据
    table_data = array2table(results.tech_features, ...
        'VariableNames', {'代际', '主要业务', '多址技术', '网络架构', '峰值速率'});
    
    % 显示表格
    uitable('Data', table_data{:,:}, ...
            'ColumnName', table_data.Properties.VariableNames, ...
            'Position', [50, 50, 1000, 200], ...
            'RowName', []);
end

%% 保存结果
if save_results
    % 创建结果文件夹（在当前章节目录下）
    if ~exist('results', 'dir')
        mkdir('results');
    end
    
    % 保存数据文件
    save('results/mobile_communication_evolution.mat', 'results');
    
    % 保存图片文件（如果显示了图形）
    if show_plots
        try
            saveas(fig_evolution, 'results/mobile_communication_evolution.png');
        catch
            % 如果saveas失败（可能是因为UI组件），使用exportapp
            exportapp(fig_evolution, 'results/mobile_communication_evolution.png');
        end
        close(fig_evolution);
    end
    
    fprintf('结果已保存到 Chapter01_Introduction/results 文件夹中\n');
end

end